$import( "SmitearWebGL.Programs.AbstractProgram" );

SmitearWebGL.Programs.LightPrePass.PostProcessingProgram = SmitearWebGL.Programs.AbstractProgram.extend(
{
	/******** constructor ********/
	
	init : function()
	{
		this._super();
		this._registClass( "SmitearWebGL.Programs.LightPrePass.PostProcessingProgram" );
	}
	,
	
	/******** public method ********/
	
	activeUniform : function( renderableObject )
	{
		var texture = renderableObject.getTextureAt( 0 );
		
		this.context.gl.activeTexture( this.context.gl.TEXTURE0 );
		this.context.gl.bindTexture( this.context.gl.TEXTURE_2D, texture.getGlTexture() );
		this.context.gl.uniform1i( this._shader.uniforms.uColorMap.location, 0 );
		
		return SmitearWebGL.Core.HResult.SUCCESS;
	}
	,
	
	/******** private method ********/
	
	_generateVertexShaderStr : function()
	{
		this._super();
		
		var vertStr =
		"\
		attribute vec3 " + SmitearWebGL.Resources.Buffer.AttribLocation.POSITION +";\n\
		varying vec2 vTexCoord;\n\
		void main(void)\n\
		{\n\
			vec4 pos = vec4(" + SmitearWebGL.Resources.Buffer.AttribLocation.POSITION +", 1.0);\n\
			gl_Position = pos;\n\
			vTexCoord = vec2((pos.x + 1.0) * 0.5, (pos.y + 1.0) * 0.5);\n\
		}\n\
		";
		
		return vertStr;
	}
	,
	_generateFragmentShaderStr : function()
	{
		this._super();
		
		var fragStr = 
		"\
		#ifdef GL_ES\n\
		precision highp float;\n\
		#endif\n\
		varying vec2 vTexCoord;\n\
		uniform sampler2D uColorMap;\n\
		void main(void)\n\
		{\n\
			vec4 color = texture2D(uColorMap, vTexCoord);\n\
			gl_FragColor = color;\n\
		}\n\
		";
		
		return fragStr;
	}
//	,
//	_generateFragmentShaderStr : function()
//	{
//		this._super();
//		
//		var fragStr = 
//		"\
//		#ifdef GL_ES\n\
//		precision highp float;\n\
//		#endif\n\
//		varying vec2 vTexCoord;\n\
//		uniform sampler2D uColorMap;\n\
//		void main(void)\n\
//		{\n\
//			vec4 color = texture2D(uColorMap, vTexCoord);\n\
//			float c = color.g / color.a;\n\
//			gl_FragColor = vec4(c, c, c, 1.0);\n\
//		}\n\
//		";
//		
//		return fragStr;
//	}
}
);